package com.xudu.tourbackend.controller;


import com.xudu.tourbackend.common.DeleteBatchRequest;
import com.xudu.tourbackend.common.DeleteRequest;
import com.xudu.tourbackend.common.Result;
import com.xudu.tourbackend.entity.ScenicArea;
import com.xudu.tourbackend.entity.request.AddScenicAreaRequest;
import com.xudu.tourbackend.entity.request.SearchScenicAreaRequest;
import com.xudu.tourbackend.entity.request.UpdateScenicAreaRequest;
import com.xudu.tourbackend.entity.vo.ScenicAreaVo;
import io.swagger.annotations.ApiImplicitParam;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author xudu
 * @since 2024-06-17
 */

@RequestMapping("/scenic-area")
public interface ScenicAreaController {

    /**
     * 添加景点信息。
     *
     * @param addScenicAreaRequest 包含景点添加信息的请求对象。
     * @param request HTTP请求对象，用于获取额外的请求信息。
     * @return 添加结果的响应对象。
     */
    @PostMapping("addScenicArea")
    Result addScenicArea(AddScenicAreaRequest addScenicAreaRequest, HttpServletRequest request);

    /**
     * 根据ID查询景点信息。
     *
     * @param searchScenicAreaRequest 包含景点查询条件的请求对象。
     * @return 查询结果的响应对象。
     */
    @GetMapping("searchScenicArea")
    Result searchScenicArea(SearchScenicAreaRequest searchScenicAreaRequest);

    /**
     * 更新景点信息。
     *
     * @ApiImplicitParam 注解 是为了提供API文档中更详细的参数说明。
     *
     * @param updateScenicAreaRequest 包含景点更新信息的请求对象。
     * @param request HTTP请求对象，用于获取额外的请求信息。
     * @return 更新结果的响应对象。
     */
    @PostMapping("updateScenicArea")
    //@ApiImplicitParam(name = "updateScenicAreaRequest", value = "更新对象", required = true, dataTypeClass = MultipartFile.class)
    Result updateScenicArea(UpdateScenicAreaRequest updateScenicAreaRequest, HttpServletRequest request);

    /**
     * 批量删除景点信息。
     *
     * @param deleteBatchRequest 包含待删除景点ID列表的请求对象。
     * @param request HTTP请求对象，用于获取额外的请求信息。
     * @return 删除结果的响应对象。
     */
    @PostMapping("deleteScenicArea")
    Result deleteScenicArea(DeleteBatchRequest deleteBatchRequest, HttpServletRequest request);

    //todo分页查询

}
